Most complex computing these days is performed in a centralized fashion. For instance, users from different locations for a given application interact with a central processor, and the central processor handles all processing functions related to the application. An example is a gaming environment where multiple users from across the world log onto a central server and play an interactive game together. Each user transmits its instructions to the central server, and the central server, based on the order of the user instructions, will execute the instructions. With weapons aimed at each other in the game, Player A pressed the shoot button before Player B, so Player A lives and Player B dies. Centralized computing has limits, however. For one, throughput is restricted by the use of a single processor. The throughput of a centralized system can never be more than the throughput of the single central processor.
Distributed computing provides an alternative to centralized computing. In distributed computing, multiple nodes, rather than a single node, can be used at the same time to process an application. However, distributed computing suffers from drawbacks such as double spend. Since multiple nodes may process different instructions, the nodes must agree to an order of events. For example, consider a seller posts an offer for a product online. Buyer A in China transmits an acceptance to the offer, and that acceptance is processed by Node 1 located in China. Around the same time, another buyer in the United States, Buyer B, also transmits an acceptance to the offer, and that acceptance is processed by Node 2 located in the United States. Nodes 1 and 2 may disagree about who accepted the offer first, Buyer A or Buyer B.
Conventional solutions to ordering events in a distributed computing environment have fallen short. For example, consensus algorithms, such as Paxos and Raft, involve heavy coordination between the participants to ensure agreement of the order of events. This leads to low throughput. Another conventional solution such as the algorithm for Bitcoin relies upon proof-of-work rather than explicit coordination to achieve agreement on the order of events. This, however, results in long latencies, as well as low throughput.
Accordingly, the inventors recognized a need in the art for distributed computer network with consistent global ordering events in close to real time that achieves high throughput and low latency.